/**
 * 用户相关接口
 * 包括删除用户、用户列表（支持模糊）
 */
// 引入express
const express = require("express")
// 引入数据库连接池
const pool = require("../../db/db")
// 引入封装后的响应结果
const Response = require("../../utils/ResponseData")
// 引入表单验证模块joi
const Joi = require("joi")

// 创建路由管理器
const router = express.Router()

/**
 * 用户查询接口（同时支持模糊查询+分页）
 * 请求url：http://localhost:3001/petUser/get?page=1&&pageSize=5&&keywords=
 * 请求方式：get
 */
router.get("/petUser/get", async (req, res) => {
    console.log("petUser.js->/：", req.query)
    // 表单校验
    // 配置校验规则
    let schema = Joi.object({
        keywords: Joi.string(),// 关键字，可以不传
        page: Joi.number().required(), // 当前页码，校验规则：必须是数值类型，非空
        pageSize: Joi.number().integer().max(10).required(),// 每页显示条数，校验规则：整数，10条以内，非空
    })
    // 校验
    let { error, value } = schema.validate(req.query)
    if (error) {
        // 校验不通过
        res.send(Response.error(error))
        return
    }

    // 校验通过
    try {
        let { page, pageSize, keywords } = req.query
        // 计算每页开始位置：每页开始位置 = (当前页码 - 1) * 每页显示条数
        let startIndex = (page - 1) * pageSize
        // 将pageSize转换为整数
        pageSize = pageSize ? parseInt(pageSize) : 5
        // 处理keywords
        if (!keywords) {
            keywords = ''
        }
        // 编写sql：查询每页显示的数据 '%ss%'
        const sql = "select * from (select * from user where u_name like ? or u_email like ? or u_tel like ?)b1 limit ?,?"
        // 执行sql
        const result = await pool.querySync(sql, [`%${keywords}%`, `%${keywords}%`, `%${keywords}%`, startIndex, pageSize])

        // 编写sql：查询总条数
        const sql2 = "select count(u_id) as count from (select * from user where u_name like ? or u_email like ? or u_tel like ?)b1"
        // 执行sql
        const result2 = await pool.querySync(sql2, [`%${keywords}%`, `%${keywords}%`, `%${keywords}%`])
        // 获取查询到的总条数
        const total = result2[0].count

        // 将数据响应到前端
        res.send(Response.success({ page: parseInt(page), pageSize: pageSize, total, result }))

    } catch (e) {
        res.send(Response.error(e))
    }

})


/**
 * 根据id删除商家信息
 * 请求url：http://localhost:3001/petUser/delete/1
 * 请求method：get
 */
router.delete("/petUser/delete/:u_id", (req, res) => {
    console.log(req.params)
    let { u_id } = req.params;
    // 校验规则
    const schema = Joi.object({
        u_id: Joi.number().required()
    })
    // 校验
    const { error, value } = schema.validate(req.params)
    if (error) {
        res.send(Response.error("用户编号不能为空！"))
        return
    }
    // 编写sql
    const sql = "delete from user where u_id=?"
    // 执行sql
    pool.query(sql, [u_id], (error, result) => {
        if (error) {
            res.send(Response.error("用户信息删除失败！"))
            return
        }
        res.send(Response.success(null, "用户信息删除成功！"))
    })
})
module.exports = router